Build 450 v0.9.6

Patch release over **Build 450 v0.9.5**. Same internal build counter ("sBuild = 450"); public version bump **"0.9.5" -> "0.9.6"** ("sRevision" **5 -> 6**).

---

## Consensual spank: remove household gate on "Spank.Test()"

### Background (player-visible symptom)

- After **"Ask To Be Spanked"** or **"Ask To Spank"** was **accepted**, the consensual spank animation could **fail to start** when the two Sims were **not in the same household** (typical case: active household Sim + townie/NPC on a community lot).
- Social feedback showed acceptance; no spank loop followed.
- **Not** a male/female or trait-combination bug -> trait pairs such as Submissive/Masochist (requester) and Dominant/Rapist (partner) are valid and favor acceptance.

### Root cause (technical)

- "Spank.Test()" in "Oniki.Gameplay.Punishments/Spank.cs" shared one gate for **punitive** and **consensual** singletons.
- When "actor.Household != target.Household" and the pair was not blood/step related, "Test()" returned **false** unless a **"HighSchoolSituation"** professor/headmaster -> student context applied.
- Consensual flows route to **"Spank.Singleton_Consensual"** / **"Singleton_Consensual_Incest"** ("mSkipPunishmentReasonGate = true"), which already bypass punitive checks ("EvilSpank", punishment reason), but still hit the **household / school** block inherited from the discipline path.

### Design intent after fix

- **Consensual** spank (ask flows with "EnableConsensualSpanking" ON) must run between **any eligible Sims** that pass the existing **"AskToBeSpanked" / "AskToSpank"** gates -> including **selectable household <-> NPC**, different households, community lots.

### Changes

| Area | File | Behavior |
|------|------|----------|
| Household gate scope | "Oniki.Gameplay.Punishments/Spank.cs" | Wrap household + "HighSchoolSituation" block in "if (!mSkipPunishmentReasonGate)" so it applies **only** to punitive singletons. |


### Validation

- **PASS (owner):** household Sim -> NPC (different household), **"Ask To Be Spanked"**, accepted -> consensual spank animation starts.

---

## Version metadata (reference)

Source: "Oniki/KinkyMod.cs" (active "Project" tree).

| Field | Value | Role |
|-------|-------|------|
| "sVersion" | "0" | Major |
| "sSubVersion" | "9" | Minor (the **9** in **0.9**.x) |
| "sRevision" | "6" | Patch (the last **6** in **0.9.6**) |
| "sBuild" | "450" | Internal build counter (popup + save "Version" key) |

**In-game popup / log header:** "Oniki's Kinky World: v0.9.6 Build 450".

**Serialized "Version" int:** "(sVersion << 16) | (sSubVersion << 9) | sRevision" -> save upgrade detection compares stored settings build vs "KinkyMod.sBuild" (**450** unchanged from v0.9.5).

**No new STBL** in this patch.